#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


//void f(int st)
//{
//	int n = 20;
//	srand(st);
//	while (n--)
//	{
//		printf("%-7d ", rand());
//	}
//	printf("\n");
//}
//
//int main()
//{
//	srand((unsigned)time(NULL));
//	f(1);
//	f(2);
//	f(3);
//	f(4);
//	f(5);
//	f(6);
//	f(7);
//	return 0;
//}
//int main()
//{
//	int n = 20;
//	while (n--)
//	{   
//		printf("%-8d ", rand());
//		printf("%-8d ", rand());
//		printf("%-8d ", rand());
//		printf("%-8d ", rand());
//		printf("%-8d ", rand(5));
//		printf("%-8d ", rand(6));
//		printf("%-8d ", rand(7));
//		printf("%-8d ", rand(8));
//		printf("%-8d ", rand(9));
//		printf("\n");
//	}
//
//	//while (n--)
//	//{
//	//	srand(1);
//	//	printf("%-8d ", rand());
//	//	srand(2);
//	//	printf("%-8d ", rand());
//	//	srand(3);
//	//	printf("%-8d ", rand());
//	//	srand(4);
//	//	printf("%-8d ", rand());
//	//	srand(5);
//	//	printf("%-8d ", rand());
//	//	srand(6);
//	//	printf("%-8d ", rand());
//	//	printf("\n");
//	//}
//
//
//	return 0;
//}

//int main()
//{
//    int n = 0;
//    int m = 0;
//    int arr_n[1000] = { 0 };
//    int arr_m[1000] = { 0 };
//    scanf("%d%d", &n, &m);
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &arr_n[i]);
//    }
//    for (i = 0; i < m; i++)
//    {
//        scanf("%d", &arr_m[i]);
//    }
//
//    int ni = 0;
//    int mi = 0;
//    while (ni < n && mi < m)
//    {
//        if (arr_n[ni] < arr_m[mi])
//        {
//            printf("%d ", arr_n[ni]);
//            ni++;
//        }
//        else
//        {
//            printf("%d ", arr_m[mi]);
//            mi++;
//        }
//    }
//
//    if (ni == n)
//    {
//        for (i = mi; i < m; i++)
//        {
//            printf("%d ", arr_m[mi]);
//        }
//    }
//    if (mi == m)
//    {
//        for (i = ni; i < n; i++)
//        {
//            printf("%d ", arr_n[ni]);
//        }
//    }
//    return 0;
//}

//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int arr[50] = { 0 };
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//
//    int flag = 0;
//    for (i = 0; i < n - 1; i++)
//    {
//        if (arr[i] <= arr[i + 1])
//        {
//            flag++;
//        }
//        else
//        {
//            flag--;
//        }
//    }
//
//    if (flag == n - 1 || -flag == n - 1)
//    {
//        printf("sorted\n");
//    }
//    else
//    {
//        printf("unsorted\n");
//    }
//    return 0;
//}

//int main()
//{
//	printf("%d", sizeof(int*));
//	return 0;
//}


int main()
{
    int year = 0;
    int month = 0;
    while (scanf("%d%d", &year, &month) != EOF)
    {
        switch (month)
        {
        case 2:
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0)
            {
                printf("29\n");
            }
            else
            {
                printf("28\n");
            }
            break;

        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            printf("31\n");
            break;

        case 4:
        case 6:
        case 9:
        case 11:
            printf("30\n");
        }
    }
    return 0;
}

//int main()
//{
//    int y = 0;
//    int m = 0;
//    int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
//    while (scanf("%d%d", &y, &m) != EOF)
//    {
//        int day = days[m - 1];
//        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
//        {
//            if (m == 2)
//                day += 1;
//        }
//        printf("%d\n", day);
//    }
//    return 0;
//}